/*
 * DePasagem
 * Criação : 24/04/2014
 */

package br.com.dp.web.filtro;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.dp.dto.dominio.PaginasEnum;
import br.com.dp.dto.dominio.PerfilEnum;

/**
 * Para evitar que usuários volte a página de login, se o usuário já logado.
 * 
 * @author <Mês por extenso>/2014: Messias Xavier Sant`Ana <DD>
 */
@WebFilter("/login.xhtml")
public class LoginPageFilter implements Filter
{

   @Override
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
      ServletException
   {
      HttpServletRequest request = (HttpServletRequest) servletRequest;
      HttpServletResponse response = (HttpServletResponse) servletResponse;

      if (request.getUserPrincipal() != null)
      { // Se o usuário já está autenticado
         String navigateString = "";
         if (request.isUserInRole(PerfilEnum.ADM.getPerfil()))
         {
            navigateString = PaginasEnum.INDEX_ADM.getPagina();
         }
         else if (request.isUserInRole(PerfilEnum.PRP.getPerfil()))
         {
            navigateString = PaginasEnum.INDEX_PRP.getPagina();
         }
         else if (request.isUserInRole(PerfilEnum.FNC.getPerfil()))
         {
            navigateString = PaginasEnum.INDEX_FNC.getPagina();
         }
         else if (request.isUserInRole(PerfilEnum.CLT.getPerfil()))
         {
            navigateString = PaginasEnum.INDEX_CLT.getPagina();
         }
         response.sendRedirect(request.getContextPath() + navigateString);
      }
      else
      {
         filterChain.doFilter(servletRequest, servletResponse);
      }
   }

   @Override
   public void destroy()
   {
   }

   @Override
   public void init(FilterConfig filterConfig) throws ServletException
   {
   }
}